// pages/index/ann.js
const AnnService = require('../../services/ann.js');

Page({
  /**
   * 页面的初始数据
   */
  data: {
    annList: [], // 公告列表
    loading: false, // 加载状态
    hasMore: true, // 是否有更多数据
    page: 1, // 当前页码
    limit: 10, // 每页数量
    showDetail: false, // 是否显示详情弹窗
    currentAnn: null // 当前查看的公告
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.loadAnnList();
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    // 页面显示时刷新数据
    this.setData({
      annList: [],
      page: 1,
      hasMore: true
    });
    this.loadAnnList();
  },

  /**
   * 加载公告列表
   */
  loadAnnList() {
    if (this.data.loading || !this.data.hasMore) {
      return;
    }

    this.setData({ loading: true });

    AnnService.getList({
      page: this.data.page,
      limit: this.data.limit
    }).then(res => {
      if (res.code === 1) {
        const { list, total } = res.data;
        const newList = this.data.page === 1 ? list : [...this.data.annList, ...list];
        
        this.setData({
          annList: newList,
          hasMore: newList.length < total,
          page: this.data.page + 1
        });
      } else {
        wx.showToast({
          title: res.msg || '获取公告列表失败',
          icon: 'none'
        });
      }
    }).catch(err => {
      console.error('获取公告列表失败:', err);
      wx.showToast({
        title: '网络错误，请重试',
        icon: 'none'
      });
    }).finally(() => {
      this.setData({ loading: false });
    });
  },

  /**
   * 查看公告详情
   */
  viewAnnDetail(e) {
    const id  = e.currentTarget.dataset.id;
    
    wx.showLoading({ title: '加载中...' });
    
    AnnService.getDetail({ id }).then(res => {
      wx.hideLoading();
      
      if (res.code === 1) {
        this.setData({
          currentAnn: res.data,
          showDetail: true
        });
      } else {
        wx.showToast({
          title: res.msg || '获取公告详情失败',
          icon: 'none'
        });
      }
    }).catch(err => {
      wx.hideLoading();
      console.error('获取公告详情失败:', err);
      wx.showToast({
        title: '网络错误，请重试',
        icon: 'none'
      });
    });
  },

  /**
   * 关闭详情弹窗
   */
  closeDetail() {
    this.setData({
      showDetail: false,
      currentAnn: null
    });
  },

  /**
   * 阻止事件冒泡
   */
  stopPropagation() {
    // 阻止事件冒泡
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    this.setData({
      annList: [],
      page: 1,
      hasMore: true
    });
    this.loadAnnList().finally(() => {
      wx.stopPullDownRefresh();
    });
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
    this.loadAnnList();
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {
    return {
      title: '公告列表',
      path: '/pages/index/ann'
    };
  }
})